/**
 * 计算器（浮点数计算）
 *     主要解决价格计算浮点数不准确问题
 * @type {{}}
 */
const calculator = {};

calculator.floatAdd = (arg1, arg2)=>{
    let r1, r2, m;
    try {r1 = arg1.toString().split('.')[1].length;} catch (e) {r1 = 0;}

    try {r2 = arg2.toString().split('.')[1].length;}catch(e) {r2 = 0;}

    m = Math.pow(10, Math.max(r1, r2));

    return (arg1 * m + arg2 * m) / m;
};


calculator.floatSub = (arg1, arg2)=>{
    let r1, r2, m;
    try {r1 = arg1.toString().split('.')[1].length;} catch (e) {r1 = 0;}

    try {r2 = arg2.toString().split('.')[1].length;}catch(e) {r2 = 0;}

    m = Math.pow(10, Math.max(r1, r2));

    return (arg1 * m - arg2 * m) / m;
}

calculator.floatMul = (arg1,arg2)=>{
    let m=0;
    let s1=arg1.toString();
    let s2=arg2.toString();
    try{m+=s1.split(".")[1].length}catch(e){}
    try{m+=s2.split(".")[1].length}catch(e){}

    return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
}


calculator.floatDiv = (arg1,arg2)=>{
    let t1=0,t2=0,r1,r2;
    try{t1=arg1.toString().split(".")[1].length}catch(e){}
    try{t2=arg2.toString().split(".")[1].length}catch(e){}

    r1=Number(arg1.toString().replace(".",""));

    r2=Number(arg2.toString().replace(".",""));
    return (r1/r2)*Math.pow(10,t2-t1);
}


export default calculator;
